// 存放 vuex[状态管理] 相关核心代码

// mutations 传参
// 1.提供 mutation 带参数（提交载荷）的函数
// 2.在页面中提交调用 mutation - this.$store.commit('函数名',参数)
// 在 vue 中只允许 mutation 函数传递一个参数，但是可以写成复杂类型的参数，如：obj、arr

import Vue from 'vue'
import Vuex from 'vuex'

// 插件安装
Vue.use(Vuex)

// 创建仓库
const store = new Vuex.Store({
    state: {
        title: '仓库大标题',
        count: 100
    },
    // mutations 可以提供修改数据的方法
    mutations: {
        // 所有的 mutation 函数，第一个参数都是 state
        addCount(state, obj) {
            state.count += obj.count
        },
        subCount(state, n) {
            state.count -= n
        },
        changeTitle(state, newTitle) {
            state.title = newTitle
        },
        changeCount(state, newCount) {
            state.count = newCount
        }
    }
})

// 导出给 main.js 使用
export default store
